home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / glibmm-2.4 / proc / m4 / class_shared.m4 < prev    next >
M4 Source File  |  2006-04-20  |  5KB  |  194 lines

  1. dnl $Id: class_shared.m4,v 1.3 2004/03/13 15:20:19 murrayc Exp $
  2.  
  3. define(`_CLASS_START',`dnl
  4. _PUSH(SECTION_CLASS1)
  5. ')
  6.  
  7. dnl
  8. dnl
  9. dnl
  10. define(`_H_VFUNCS_AND_SIGNALS',`dnl
  11.  
  12. public:
  13.   //C++ methods used to invoke GTK+ virtual functions:
  14. _IMPORT(SECTION_H_VFUNCS_CPPWRAPPER)
  15.  
  16. protected:
  17.   //GTK+ Virtual Functions (override these to change behaviour):
  18. _IMPORT(SECTION_H_VFUNCS)
  19.  
  20.   //Default Signal Handlers::
  21. _IMPORT(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
  22. ')
  23.  
  24.  
  25. dnl
  26. dnl
  27. dnl
  28. define(`_IMPLEMENTS_INTERFACE',`dnl
  29. _PUSH(SECTION_CC_IMPLEMENTS_INTERFACES)
  30.   $1`'::add_interface(get_type());
  31. _POP()
  32. ')
  33.  
  34.  
  35.  
  36. dnl
  37. dnl
  38. dnl
  39. define(`_PH_CLASS_DECLARATION',`dnl
  40. class __CPPNAME__`'_Class : public Glib::Class
  41. {
  42. public:
  43. #ifndef DOXYGEN_SHOULD_SKIP_THIS
  44.   typedef __CPPNAME__ CppObjectType;
  45.   typedef __REAL_CNAME__ BaseObjectType;
  46. ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
  47. ',`dnl
  48.   typedef __REAL_CNAME__`'Class BaseClassType;
  49.   typedef __CPPPARENT__`'_Class CppClassParent;
  50.   typedef __REAL_CPARENT__`'Class BaseClassParent;
  51. ')dnl
  52.  
  53.   friend class __CPPNAME__;
  54. #endif /* DOXYGEN_SHOULD_SKIP_THIS */
  55.  
  56.   const Glib::Class& init();
  57.  
  58. ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
  59. ',`dnl
  60.   static void class_init_function(void* g_class, void* class_data);
  61. ')dnl
  62.  
  63.   static Glib::ObjectBase* wrap_new(GObject*);
  64.  
  65. protected:
  66.  
  67.   //Callbacks (default signal handlers):
  68.   //These will call the *_impl member methods, which will then call the existing default signal callbacks, if any.
  69.   //You could prevent the original default signal handlers being called by overriding the *_impl method.
  70. _IMPORT(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
  71.  
  72.   //Callbacks (virtual functions):
  73. _IMPORT(SECTION_PH_VFUNCS)
  74. };
  75. ')
  76.  
  77.  
  78. dnl
  79. dnl
  80. dnl
  81. define(`_PCC_CLASS_IMPLEMENTATION',`dnl
  82. const Glib::Class& __CPPNAME__`'_Class::init()
  83. {
  84.   if(!gtype_) // create the GType if necessary
  85.   {
  86.     // Glib::Class has to know the class init function to clone custom types.
  87.     class_init_func_ = &__CPPNAME__`'_Class::class_init_function;
  88.  
  89.     // This is actually just optimized away, apparently with no harm.
  90.     // Make sure that the parent type has been created.
  91.     //CppClassParent::CppObjectType::get_type();
  92.  
  93.     // Create the wrapper type, with the same class/instance size as the base type.
  94.     register_derived_type(_LOWER(__CCAST__)_get_type());
  95.  
  96.     // Add derived versions of interfaces, if the C type implements any interfaces:
  97. _IMPORT(SECTION_CC_IMPLEMENTS_INTERFACES)
  98.   }
  99.  
  100.   return *this;
  101. }
  102. ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
  103. ',`dnl
  104.  
  105. void __CPPNAME__`'_Class::class_init_function(void* g_class, void* class_data)
  106. {
  107.   BaseClassType *const klass = static_cast<BaseClassType*>(g_class);
  108.   CppClassParent::class_init_function(klass, class_data);
  109.  
  110. _IMPORT(SECTION_PCC_CLASS_INIT_VFUNCS)
  111. _IMPORT(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
  112. }
  113. ')dnl
  114.  
  115. _IMPORT(SECTION_PCC_VFUNCS)
  116.  
  117. _IMPORT(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
  118. ')
  119.  
  120.  
  121.  
  122. dnl
  123. dnl
  124. dnl
  125. define(`_CC_CLASS_IMPLEMENTATION',`dnl
  126. __CPPNAME__::CppClassType __CPPNAME__::`'__BASE__`'_class_; // initialize static member
  127.  
  128. GType __CPPNAME__::get_type()
  129. {
  130.   return __BASE__`'_class_.init().get_type();
  131. }
  132.  
  133. GType __CPPNAME__::get_base_type()
  134. {
  135.   return _LOWER(__CCAST__)_get_type();
  136. }
  137.  
  138. _IMPORT(SECTION_CC)
  139.  
  140. dnl _IMPORT(SECTION_CC_SIGNALPROXIES_CUSTOM)
  141.  
  142. _IMPORT(SECTION_CC_SIGNALPROXIES)
  143.  
  144. _IMPORT(SECTION_CC_PROPERTYPROXIES)
  145.  
  146. _IMPORT(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
  147.  
  148. _IMPORT(SECTION_CC_VFUNCS)
  149. _IMPORT(SECTION_CC_VFUNCS_CPPWRAPPER)
  150. ')
  151.  
  152. dnl _PARENT_GCLASS_FROM_OBJECT(object_instance_name)
  153. define(`_PARENT_GCLASS_FROM_OBJECT',`dnl
  154. g_type_class_peek_parent`'(G_OBJECT_GET_CLASS`'($1)) // Get the parent class of the object class (The original underlying C class).
  155. ')
  156.  
  157. dnl _IFACE_PARENT_FROM_OBJECT(object_instance_name)
  158. define(`_IFACE_PARENT_FROM_OBJECT',`dnl
  159. g_type_interface_peek_parent`'( // Get the parent interface of the interface (The original underlying C interface).
  160. g_type_interface_peek`'(G_OBJECT_GET_CLASS`'($1), CppObjectType::get_type`'()) // Get the interface.
  161. )dnl
  162. ')
  163.  
  164. dnl Bonobo doesn't use the "typedef struct _somestruct struct" system.
  165. define(`_STRUCT_NOT_HIDDEN',`dnl
  166. _PUSH()
  167. dnl Define this macro to be tested for later.
  168. define(`__BOOL_STRUCT_NOT_HIDDEN__',`$1')
  169. _POP()
  170. ')
  171.  
  172. dnl _STRUCT_PROTOTYPE()
  173. define(`_STRUCT_PROTOTYPE',`dnl
  174. #ifndef DOXYGEN_SHOULD_SKIP_THIS
  175. ifdef(`__BOOL_STRUCT_NOT_HIDDEN__',`dnl
  176. ',`dnl
  177. typedef struct _`'__CNAME__ __CNAME__;
  178. typedef struct _`'__CNAME__`'Class __CNAME__`'Class;
  179. ')dnl
  180. #endif /* DOXYGEN_SHOULD_SKIP_THIS */
  181. ')
  182.  
  183. dnl _GTKMMPROC_WIN32_NO_WRAP
  184. dnl Just process it to remove it from the generated file.
  185. dnl generate_wrap_init.pl will look for this in the original .hg file.
  186. dnl
  187. define(`_GTKMMPROC_WIN32_NO_WRAP', dnl
  188. `//This is not available in on Win32.
  189. //This source file will not be compiled,
  190. //and the class will not be registered in wrap_init.h or wrap_init.cc
  191. ')dnl
  192.  
  193.  
  194.